* read style files with a textstream.
* use gpsbabel::textstream instead of gbfile.
*/
-#include <cmath> // for round
-#include <cstdio> // for printf, sscanf
-#include <cstdlib> // for strtod
-#include <cstring> // for strchr, strlen, strncmp, strspn
+#include <cmath> // for round
+#include <cstdio> // for printf, sscanf
+#include <cstdlib> // for strtod
-#include <QByteArray> // for QByteArray
-#include <QString> // for QString
-#include <QtGlobal> // for foreach, qPrintable, qint64
+#include <QByteArray> // for QByteArray
+#include <QString> // for QString
+#include <QtGlobal> // for foreach, qPrintable, qint64
#include "defs.h"
#include "arcdist.h"
-#include "gbfile.h" // for gbfclose, gbfgetstr, gbfopen, gbfile
-#include "grtcirc.h" // for RAD, gcdist, linedistprj, radtomi
-#include "src/core/datetime.h" // for DateTime
-#include "src/core/logging.h" // for Fatal
+#include "grtcirc.h" // for RAD, gcdist, linedistprj, radtomi
+#include "src/core/datetime.h" // for DateTime
+#include "src/core/logging.h" // for Fatal
+#include "src/core/textstream.h" // for TextStream
#if FILTERS_ENABLED
if (arcfileopt) {
int fileline = 0;
- char* line;
+ QString line;
- gbfile* file_in = gbfopen(arcfileopt, "r", MYNAME);
+ gpsbabel::TextStream stream;
+ stream.open(arcfileopt, QIODevice::ReadOnly, MYNAME);
auto* arcpt1 = new Waypoint;
auto* arcpt2 = new Waypoint;
arcdist_arc_disp_hdr_cb(nullptr);
arcpt2->latitude = arcpt2->longitude = BADVAL;
- while ((line = gbfgetstr(file_in))) {
+ while (stream.readLineInto(&line)) {
fileline++;
- char* pound = strchr(line, '#');
- if (pound) {
- if (0 == strncmp(pound, "#break", 6)) {
+ auto pound = line.indexOf('#');
+ if (pound >= 0) {
+ if (line.mid(pound, 6) == u"#break") {
arcdist_arc_disp_hdr_cb(nullptr);
}
- *pound = '\0';
+ line.truncate(pound);
}
arcpt2->latitude = arcpt2->longitude = BADVAL;
- int argsfound = sscanf(line, "%lf %lf", &arcpt2->latitude, &arcpt2->longitude);
+ int argsfound = sscanf(CSTR(line), "%lf %lf", &arcpt2->latitude, &arcpt2->longitude);
- if (argsfound != 2 && strspn(line, " \t\n") < strlen(line)) {
+ if ((argsfound != 2) && (line.trimmed().size() > 0)) {
warning(MYNAME ": Warning: Arc file contains unusable vertex on line %d.\n", fileline);
} else {
Waypoint* arcpttmp = arcpt1;
delete arcpt1;
delete arcpt2;
- gbfclose(file_in);
+ stream.close();
} else if (rteopt) {
route_disp_all(arcdist_arc_disp_hdr_cb_f, nullptr, arcdist_arc_disp_wpt_cb_f);
} else if (trkopt) {
*/
-#include <cstdio> // for sscanf
-#include <cstring> // for strchr, strlen, strspn
+#include <cstdio> // for sscanf
-#include <QtGlobal> // for foreach
+#include <QString> // for QString
+#include <QtGlobal> // for foreach
#include "defs.h"
#include "polygon.h"
-#include "gbfile.h" // for gbfclose, gbfgetstr, gbfopen, gbfile
+#include "src/core/textstream.h" // for TextStream
#if FILTERS_ENABLED
int fileline = 0;
int first = 1;
int last = 0;
- char* line;
+ QString line;
- gbfile* file_in = gbfopen(polyfileopt, "r", MYNAME);
+ gpsbabel::TextStream stream;
+ stream.open(polyfileopt, QIODevice::ReadOnly, MYNAME);
double olat = BADVAL;
double olon = BADVAL;
double lon1 = BADVAL;
double lat2 = BADVAL;
double lon2 = BADVAL;
- while ((line = gbfgetstr(file_in))) {
+ while (stream.readLineInto(&line)) {
fileline++;
- char* pound = strchr(line, '#');
- if (pound) {
- *pound = '\0';
+ auto pound = line.indexOf('#');
+ if (pound >= 0) {
+ line.truncate(pound);
}
lat2 = lon2 = BADVAL;
- int argsfound = sscanf(line, "%lf %lf", &lat2, &lon2);
+ int argsfound = sscanf(CSTR(line), "%lf %lf", &lat2, &lon2);
- if (argsfound != 2 && strspn(line, " \t\n") < strlen(line)) {
+ if ((argsfound != 2) && (line.trimmed().size() > 0)) {
warning(MYNAME
": Warning: Polygon file contains unusable vertex on line %d.\n",
fileline);
lon1 = lon2;
}
}
- gbfclose(file_in);
+ stream.close();
foreach (Waypoint* wp, *global_waypoint_list) {
ed = (extra_data*) wp->extra_data;
#include "csv_util.h" // for csv_stringtrim, dec_to_human, csv_stringclean, human_to_dec, ddmmdir_to_degrees, dec_to_intdeg, decdir_to_dec, intdeg_to_dec, csv_linesplit
#include "formspec.h" // for FormatSpecificDataList
#include "garmin_fs.h" // for garmin_fs_t, garmin_fs_alloc
-#include "gbfile.h" // for gbfgetstr, gbfclose, gbfopen, gbfile
#include "grtcirc.h" // for RAD, gcdist, radtometers
#include "jeeps/gpsmath.h" // for GPS_Math_WGS84_To_UTM_EN, GPS_Lookup_Datum_Index, GPS_Math_Known_Datum_To_WGS84_M, GPS_Math_UTM_EN_To_Known_Datum, GPS_Math_WGS84_To_Known_Datum_M, GPS_Math_WGS84_To_UKOSMap_M
#include "jeeps/gpsport.h" // for int32
XcsvStyle
XcsvStyle::xcsv_read_style(const char* fname)
{
- gbfile* fp = gbfopen(fname, "rb", MYNAME);
XcsvStyle style;
- for (QString sbuff = gbfgetstr(fp); !sbuff.isNull(); sbuff = gbfgetstr(fp)) {
- sbuff = sbuff.trimmed();
- xcsv_parse_style_line(&style, sbuff);
+
+ gpsbabel::TextStream stream;
+ stream.open(fname, QIODevice::ReadOnly, MYNAME);
+ QString sbuff;
+ while (stream.readLineInto(&sbuff)) {
+ xcsv_parse_style_line(&style, sbuff.trimmed());
}
+ stream.close();
/* if we have no output fields, use input fields as output fields */
if (style.ofields.isEmpty()) {
style.ofields = style.ifields;
}
- gbfclose(fp);
return style;
}